package com.sun.alen.stageone;

import java.util.Random;
import java.util.Scanner;

/**
 * 数字猜谜游戏类
 * 实现了一个简单的猜数字游戏，系统随机生成1-100之间的数字，用户进行猜测
 */
public class NumberGuessing {
    private static final int MAX_NUMBER = 100;

    /**
     * 程序主入口函数
     * 控制游戏的主流程，包括游戏循环和用户选择是否继续游戏
     * @param args 命令行参数数组
     */
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        boolean flag = true;

        // 游戏主循环，根据用户选择决定是否继续游戏
        do{
            playGame(scanner);
            System.out.println("是否继续游戏？(y/n)");
            String answer = scanner.next();
            if(answer.equals("n")){
                flag =  false;
            }else if(!answer.equals("y")){
                System.out.println("请输入正确的指令！");
            }
        }while (flag);

        System.out.println("游戏结束！");
        scanner.close();
    }

    /**
     * 执行单次游戏的核心逻辑
     * 生成随机数，接收用户输入，进行比较判断，并统计猜测次数
     * @param scanner Scanner对象，用于接收用户输入
     */
    public static void playGame(Scanner scanner){
        Random random = new Random();
        int number = random.nextInt(MAX_NUMBER)+1;
        System.out.println("请输入猜测的数字：");
        int a;
        int count = 0;

        // 猜测循环，直到用户猜中正确数字为止
        while(true){
            try {
                a = scanner.nextInt();
                count++;
                if(a>number){
                    System.out.println("猜的数字太大了，请重新输入：");
                }
                else if(a<number){
                    System.out.println("猜的数字太小了，请重新输入：");
                }else {
                    System.out.println("恭喜你，猜对了！");
                    System.out.println("尝试次数为："+count);
                    break;
                }
            } catch (Exception e) {
                System.out.println("请输入一个有效的整数！");
                scanner.nextLine(); // 清除无效输入
            }
        }
    }
}

